/**
 * (C)2012 Exlu Corporation. All rights reserved.
 * 注意事項   :
 */
package cn.exlu.wea.io.directory.file;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

/**
 * 文本文件写入器
 * @author Mark
 * @version 1.0.1.1
 * @CreateTime 2013-1-23
 */
public class FileStringWriter {
    private BufferedWriter buffWriter;

    /**
     * 构造函数
     * @param fileFullPath 文件全路径
     * @param encode 写入文件内容采用的编码
     * @throws UnsupportedEncodingException 没有找到文件
     * @throws FileNotFoundException 所用编码不能识别
     */
    public FileStringWriter(String fileFullPath, String encode)
                                                               throws UnsupportedEncodingException,
                                                               FileNotFoundException {
        buffWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileFullPath,
            false), encode));
    }

    /**
     * 构造函数
     * @param file 文件
     * @param encode 写入文件内容采用的编码
     * @throws UnsupportedEncodingException 没有找到文件
     * @throws FileNotFoundException 所用编码不能识别
     */
    public FileStringWriter(File file, String encode) throws UnsupportedEncodingException,
                                                     FileNotFoundException {
        buffWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, false),
            encode));
    }

    /**
     * 写入一行
     * @param fileFullPath 文件全路径
     * @param encode 写入文件内容采用的编码
     * @param append 在现有文件中继续添加文本，而不是重写，true 添加文本 false 重写文件
     * @throws UnsupportedEncodingException 所用编码不能识别
     * @throws FileNotFoundException 没有找到文件
     */
    public FileStringWriter(String fileFullPath, String encode, boolean append)
                                                                               throws UnsupportedEncodingException,
                                                                               FileNotFoundException {
        buffWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileFullPath,
            append), encode));
    }

    /**
     * 写入文本
     * @param str 文本内容
     * @throws IOException 写入异常
     */
    public void write(String str) throws IOException {
        buffWriter.write(str);
    }

    /**
     * 写入一行文本内容
     * @param str 一行文本内容
     * @throws IOException 写入异常
     */
    public void writeLine(String str) throws IOException {
        buffWriter.write(str);
        buffWriter.newLine();
    }

    /**
     * 将数据写入文件并且关闭文件。
     * @throws IOException 关闭异常
     */
    public void close() throws IOException {
        buffWriter.flush();
        buffWriter.close();
    }

    /**
     * 将数据写入文件。
     * @throws IOException 写入异常
     */
    public void flush() throws IOException {
        buffWriter.flush();
    }
}
